package server.io.game.fact.user;

import server.io.client.ClientInfo;
import server.io.game.fact.Fact_Base;
import server.io.game.fact.hall.Hall_Base;
import server.io.game.fact.room.Room_Base;

import com.google.gson.annotations.Expose;

public abstract class User_Base extends Fact_Base implements User_Inter
{
	// 服务器相关的对象，client info
	// expose是在用gson转换json时候此注释下的对象会被忽略
	public ClientInfo nat_clientInfo;
	// 用户昵称
	public String user_nickname;
	// 用户等级
	public int user_level;
	// 用户等级排行
	public int user_level_chart;
	// 用户类型 会员 普通 等等
	public String user_type;
	// 用户名
	public String user_name;
	// 用户当前位置 room hall game
	public String user_currentplace;
	// 用户作为玩家时候的背景图片 类似就是在room里显示的玩家样子
	public String drawable_playeravatar;
	// 用户自定义头像
	public String drawable_useravatar;
	
	public User_Base(int id, String fact_type)
	{
		// TODO Auto-generated constructor stub
		super(id, "factid_00201", fact_type);
		nat_clientInfo = new ClientInfo();
	}

	@Override
	public void init()
	{
		// TODO Auto-generated method stub
	}
	
	/**
	 * 掉线后等,清除痕迹
	 */
	public void clear()
	{
		if(this.nat_clientInfo.map.get("hall") != null)
		{
			Hall_Base _hall = (Hall_Base) this.nat_clientInfo.map.get("hall");
			_hall.quit(this);
		}
		
		if(this.nat_clientInfo.map.get("room") != null)
		{
			Room_Base _room = (Room_Base) this.nat_clientInfo.map.get("room");
			_room.quit(this);
		}
	}
	
	/**
	 * 定位
	 */
	public void locate(Object scene, String sceneName)
	{
		this.nat_clientInfo.map.put(sceneName, scene);
	}
	
	/**
	 * 
	 * @param aKey
	 * @return
	 */
	public Object getInfo(String aKey)
	{
		return this.nat_clientInfo.map.get(aKey);
	}

	/**
	 * 
	 * @param aKey
	 * @param aValue
	 */
	public void putInfo(String aKey, Object aValue)
	{
		this.nat_clientInfo.map.put(aKey, aValue);
	}
}
